#include "CMainWindow.h"

#include <QApplication>
#include <QMessageBox>
#include <QSharedMemory>

int main(int argc, char* argv[])
{
    QApplication app(argc, argv);

    // 创建一个共享内存对象，使用一个唯一的键
    QSharedMemory sharedMemory("MyUniqueIdentifier");
    if (!sharedMemory.create(1)) {
        // 如果创建失败，说明已经有一个实例在运行
        QMessageBox::information(nullptr, "MyTool", "程序已经在运行！");
        return 0;
    }

    // 设置当最后一个窗口关闭时，应用程序不退出
    app.setQuitOnLastWindowClosed(false);

    // 主窗体
    CMainWindow w;

    // 组件桥
    CComponentBridge* pComponentBridge = CComponentBridge::GetInstance();

    // 连接关闭程序信号
    QObject::connect(pComponentBridge, &CComponentBridge::signalTrayActionExit, [&app]() {
        app.quit();
        CComponentBridge::ReleaseInstance();
    });

    // 处理系统托盘图标点击事件
    QObject::connect(pComponentBridge->GetTrayIcon(), &QSystemTrayIcon::activated, [&w](QSystemTrayIcon::ActivationReason reason) {
        if (reason == QSystemTrayIcon::Trigger) {
            w.show();
        }
        else if (reason == QSystemTrayIcon::DoubleClick) {
            w.show();
        }
    });

    // 程序启动，显示主界面
    w.show();

    return app.exec();
}
